import type {
  HeardResult,
  PageData,
  PageParams,
  RetResult,
} from '#/api/core/Common';

import { requestClient } from '#/api/request';

export namespace AccountApi {
  /** 修改密码 接口参数 */
  export interface changePasswordParams {
    id?: number;
    password?: string;
  }
  /** 保存更新账号 接口参数 */
  export interface saveOrUpdateParams {
    id?: number;
    realname?: string;
    username?: string;
    password?: string;
    is_active?: boolean;
  }

  /** 用户信息结构 */
  export interface UserInfo {
    is_active: boolean; // 启用状态
    username: string; // 用户名
    realname: string; // 昵称
    id: number; // 用户ID
    avatar: string; // 头像URL
    create_date: string; // 创建时间
    update_date: null | string; // 更新时间（可能为null）
    is_active_str: string; // 启用状态文字描述
  }
}

/**
 * 账号-新增修改
 */
export async function saveOrUpdate() {
  return requestClient.post<RetResult<any>>('/admin/account/saveOrUpdate');
}

/**
 * 账号-查询列表
 */
export async function searchByPage(params: PageParams) {
  return requestClient.post<RetResult<PageData<AccountApi.UserInfo>>>(
    '/admin/account/searchByPage',
    params,
  );
}

/**
 * 账号-查询头部
 */
export async function searchByHeard() {
  return requestClient.post<PageData<HeardResult>>(
    '/admin/account/searchByHeard',
  );
}

/**
 * 账号-修改密码
 */
export async function changePasswordParams(
  data: AccountApi.changePasswordParams,
) {
  return requestClient.post<AccountApi.changePasswordParams>(
    '/admin/account/changePassword',
    data,
  );
}

/**
 * 账号-详情
 */
export async function detail() {
  return requestClient.get<RetResult<any>>('/admin/account/detail');
}

/**
 * 账号-删除
 */
export async function deleteById() {
  return requestClient.get<RetResult<any>>('/admin/account/deleteById');
}
